package java_reflect.Test;
import java_reflect.Student;

import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * @author 美女
 * @date 2022/03/25 22:40
 **/
public class MethodTest {
    public static void main(String[] args) throws Exception{
        //1.要使用反射先拿到该类的class对象
        Class<?> cls=Class.forName("java_reflect.Student");
        //2.获取该类的所有方法的Method对象
        //拿到private的fun方法
        //cls.getDeclaredMethod(方法名称，参数类型)
        Method methodFun=cls.getDeclaredMethod("fun");
        methodFun.setAccessible(true);
        //fun方法是成员方法，必须通过Student类的对象调用
        Student stu= (Student) cls.newInstance();
        //开始调用
        // methodFun.invoke(通过哪个具体对象来调用，方法的参数)
        methodFun.invoke(stu);
        //拿到staticFunc对象
        Method staticFunc=cls.getDeclaredMethod("staticFunc", String.class);
        staticFunc.setAccessible(true);
        //调用staticFunc方法
        //静态方法不需要对象就能调用
        staticFunc.invoke(null,"哈哈");
    }
}
